<

「RouteInformation.location」の移行ガイド

まとめ

RouteInformation.locationおよび関連する API は非推奨になりました 有利にRouteInformation.uri

コンテクスト

RouteInformation権限情報が必要です さまざまな Web ドメインからのモバイル ディープリンクを処理します。 のuriフィールドが追加されましたRouteInformationそれを捕らえます ディープリンク全体の情報とルート関連のパラメータ 完全に変換されましたUriフォーマット。 これにより、互換性のない API は非推奨になりました。

変更内容の説明

  • RouteInformation.locationに置き換えられましたRouteInformation.uri
  • WidgetBindingObserver.didPushRoute廃止されました。
  • locationのパラメータSystemNavigator.routeInformationUpdatedだった 新しく追加されたものに置き換えられますuriパラメータ。

移行ガイド

移行前のコード:

const RouteInformation myRoute = RouteInformation(location: '/myroute');

移行後のコード:

final RouteInformation myRoute = RouteInformation(uri: Uri.parse('/myroute'));

移行前のコード:

final String myPath = myRoute.location;

移行後のコード:

final String myPath = myRoute.uri.path;

移行前のコード:

class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
  @override
  Future<bool> didPushRoute(String route) => _handleRoute(route);
}

移行後のコード:

class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
  @override
  Future<bool> didPushRouteInformation(RouteInformation routeInformation) => _handleRoute(
    Uri.decodeComponent(
      Uri(
        path: uri.path.isEmpty ? '/' : uri.path,
        queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll,
        fragment: uri.fragment.isEmpty ? null : uri.fragment,
      ).toString(),
    )
  );
}

移行前のコード:

SystemNavigator.routeInformationUpdated(location: '/myLocation');

移行後のコード:

SystemNavigator.routeInformationUpdated(uri: Uri.parse('/myLocation'));

タイムライン

リリースされたバージョン: 3.9.0-18.0.pre-93-gf9095ef022
安定版リリース: TBD

参考文献

関連する PR:

  • PR 119968: URL サポートを実装します。 RouteInformation と DidPushRouteInformation。